package br.com.ecomanda.model;

import java.io.Serializable;

import javax.persistence.*;

import br.com.ecomanda.enumerations.StatusPedidoEnum;

import java.util.List;

/**
 * The persistent class for the status_pedido database table.
 * 
 */
@Entity
@Table(name = "status_pedido")
@NamedQuery(name = "StatusPedido.findAll", query = "SELECT s FROM StatusPedido s")
public class StatusPedido implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_status_pedido")
	private int idStatusPedido;

	@Column(name = "ds_status_pedido")
	private String dsStatusPedido;

	@Column(name = "fl_final")
	private String flFinal;

	@Column(name = "fl_inicial")
	private String flInicial;

	@Column(name = "fl_pode_cancelar")
	private String flPodeCancelar;

	// bi-directional many-to-one association to TransicoesStatusPedido
	@OneToMany(mappedBy = "statusPedido1")
	private List<TransicoesStatusPedido> transicoesStatusPedidos1;

	// bi-directional many-to-one association to TransicoesStatusPedido
	@OneToMany(mappedBy = "statusPedido2")
	private List<TransicoesStatusPedido> transicoesStatusPedidos2;

	public StatusPedido() {
	}

	public int getIdStatusPedido() {
		return this.idStatusPedido;
	}

	public void setIdStatusPedido(int idStatusPedido) {
		this.idStatusPedido = idStatusPedido;
	}

	public String getDsStatusPedido() {
		return this.dsStatusPedido;
	}

	public void setDsStatusPedido(String dsStatusPedido) {
		this.dsStatusPedido = dsStatusPedido;
	}

	public String getFlFinal() {
		return this.flFinal;
	}

	public void setFlFinal(String flFinal) {
		this.flFinal = flFinal;
	}

	public String getFlInicial() {
		return this.flInicial;
	}

	public void setFlInicial(String flInicial) {
		this.flInicial = flInicial;
	}

	public String getFlPodeCancelar() {
		return this.flPodeCancelar;
	}

	public void setFlPodeCancelar(String flPodeCancelar) {
		this.flPodeCancelar = flPodeCancelar;
	}

	public List<TransicoesStatusPedido> getTransicoesStatusPedidos1() {
		return this.transicoesStatusPedidos1;
	}

	public void setTransicoesStatusPedidos1(
			List<TransicoesStatusPedido> transicoesStatusPedidos1) {
		this.transicoesStatusPedidos1 = transicoesStatusPedidos1;
	}

	public TransicoesStatusPedido addTransicoesStatusPedidos1(
			TransicoesStatusPedido transicoesStatusPedidos1) {
		getTransicoesStatusPedidos1().add(transicoesStatusPedidos1);
		transicoesStatusPedidos1.setStatusPedido1(this);

		return transicoesStatusPedidos1;
	}

	public TransicoesStatusPedido removeTransicoesStatusPedidos1(
			TransicoesStatusPedido transicoesStatusPedidos1) {
		getTransicoesStatusPedidos1().remove(transicoesStatusPedidos1);
		transicoesStatusPedidos1.setStatusPedido1(null);

		return transicoesStatusPedidos1;
	}

	public List<TransicoesStatusPedido> getTransicoesStatusPedidos2() {
		return this.transicoesStatusPedidos2;
	}

	public void setTransicoesStatusPedidos2(
			List<TransicoesStatusPedido> transicoesStatusPedidos2) {
		this.transicoesStatusPedidos2 = transicoesStatusPedidos2;
	}

	public TransicoesStatusPedido addTransicoesStatusPedidos2(
			TransicoesStatusPedido transicoesStatusPedidos2) {
		getTransicoesStatusPedidos2().add(transicoesStatusPedidos2);
		transicoesStatusPedidos2.setStatusPedido2(this);

		return transicoesStatusPedidos2;
	}

	public TransicoesStatusPedido removeTransicoesStatusPedidos2(
			TransicoesStatusPedido transicoesStatusPedidos2) {
		getTransicoesStatusPedidos2().remove(transicoesStatusPedidos2);
		transicoesStatusPedidos2.setStatusPedido2(null);

		return transicoesStatusPedidos2;
	}

	public boolean isPodeCancelar() {
		return (idStatusPedido == StatusPedidoEnum.PRONTO.getStatus() || idStatusPedido == StatusPedidoEnum.REGISTRADO
				.getStatus());
	}

	public boolean isPodeEntregar() {
		return (idStatusPedido == StatusPedidoEnum.PRONTO.getStatus() || idStatusPedido == StatusPedidoEnum.REGISTRADO
				.getStatus());
	}

	public boolean isPodeAprontar() {
		return (idStatusPedido == StatusPedidoEnum.REGISTRADO.getStatus());
	}

}